#pragma once
#include "uart/ProtocolSender.h"









namespace{
void setYAxisRangeText(int minValue, int maxValue) {

    // 计算每一步的增量
    int step = (maxValue - minValue) / 4;

    // 设置每个Y轴标签的值
    mcountY0Ptr->setText(std::to_string(minValue));
	mcountY1Ptr->setText(std::to_string(minValue + step));
	mcountY2Ptr->setText(std::to_string(minValue + 2 * step));
	mcountY3Ptr->setText(std::to_string(minValue + 3 * step));
	mcountY4Ptr->setText(std::to_string(maxValue));
}

void setYAxisRangeText(int minValue, int maxValue,int count) {

    // 计算每一步的增量
    int step = (maxValue - minValue) / count;
}

SZKPoint points2[] = {
        {20 , 200},
        {100, 310},
        {150 , 340},
        {200, 440},
        {250, 280},

        {300 , 370},
        {350 , 370},
        {400, 290},
        {450 , 360},
        {500, 200},

        {550, 400},
        {630 , 400},
};


int mapYValue(int y, int originalMin, int originalMax) {
    return 180 - (y - originalMin) * 180 / (originalMax - originalMin);
}

}
/**
 * 注册定时器
 * 填充数组用于注册定时器
 * 注意：id不能重复
 */
static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[] = {
	//{0,  6000}, //定时器id=0, 时间间隔6秒
	//{1,  1000},
};

/**
 * 当界面构造时触发
 */
static void onUI_init(){

	for (size_t i = 0; i < TABLESIZE(points2); ++i) {
		points2[i].y =mapYValue(points2[i].y,200,500);
	    }
    setYAxisRange(100,500);
    mPainter1Ptr->setLineWidth(7);
    mPainter1Ptr->setSourceColor(0x00AEFF);
    /** 根据提供的多个点坐标连接为曲线 */
    mPainter1Ptr->drawCurve(points2, TABLESIZE(points2));

}

/**
 * 当切换到该界面时触发
 */
static void onUI_intent(const Intent *intentPtr) {
    if (intentPtr != NULL) {
        //TODO
    }
}

/*
 * 当界面显示时触发
 */
static void onUI_show() {

}

/*
 * 当界面隐藏时触发
 */
static void onUI_hide() {

}

/*
 * 当界面完全退出时触发
 */
static void onUI_quit() {

}

/**
 * 串口数据回调接口
 */
static void onProtocolDataUpdate(const SProtocolData &data) {

}

/**
 * 定时器触发函数
 * 不建议在此函数中写耗时操作，否则将影响UI刷新
 * 参数： id
 *         当前所触发定时器的id，与注册时的id相同
 * 返回值: true
 *             继续运行当前定时器
 *         false
 *             停止运行当前定时器
 */
static bool onUI_Timer(int id){
	switch (id) {

		default:
			break;
	}
    return true;
}

/**
 * 有新的触摸事件时触发
 * 参数：ev
 *         新的触摸事件
 * 返回值：true
 *            表示该触摸事件在此被拦截，系统不再将此触摸事件传递到控件上
 *         false
 *            触摸事件将继续传递到控件上
 */
static bool onfilterActivityTouchEvent(const MotionEvent &ev) {
    switch (ev.mActionStatus) {
		case MotionEvent::E_ACTION_DOWN://触摸按下
			//LOGD("时刻 = %ld 坐标  x = %d, y = %d", ev.mEventTime, ev.mX, ev.mY);
			break;
		case MotionEvent::E_ACTION_MOVE://触摸滑动
			break;
		case MotionEvent::E_ACTION_UP:  //触摸抬起
			break;
		default:
			break;
	}
	return false;
}
static bool onButtonClick_Button1(ZKButton *pButton) {
    LOGD(" ButtonClick Button1 !!!\n");
    return false;
}

static bool onButtonClick_Button2(ZKButton *pButton) {
    LOGD(" ButtonClick Button2 !!!\n");
    return false;
}

static bool onButtonClick_Button3(ZKButton *pButton) {
    LOGD(" ButtonClick Button3 !!!\n");
    return false;
}

static bool onButtonClick_Button4(ZKButton *pButton) {
    LOGD(" ButtonClick Button4 !!!\n");
    return false;
}

static bool onButtonClick_ButtonR(ZKButton *pButton) {
    LOGD(" ButtonClick ButtonR !!!\n");
    return false;
}

static bool onButtonClick_ButtonL(ZKButton *pButton) {
    LOGD(" ButtonClick ButtonL !!!\n");
    return false;
}

static bool onButtonClick_Button5(ZKButton *pButton) {
    LOGD(" ButtonClick Button5 !!!\n");
    return false;
}

static bool onButtonClick_Button6(ZKButton *pButton) {
    LOGD(" ButtonClick Button6 !!!\n");
    return false;
}
